{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.io import loadmat\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "import scipy.optimize as opt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext klab-autotime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 93.4 ms\n"
     ]
    }
   ],
   "source": [
    "data = loadmat('../data_files/data/ex4data1.mat')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Sun Oct 16 13:09:09 2011',\n",
       " '__version__': '1.0',\n",
       " '__globals__': [],\n",
       " 'X': array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        ...,\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.]]),\n",
       " 'y': array([[10],\n",
       "        [10],\n",
       "        [10],\n",
       "        ...,\n",
       "        [ 9],\n",
       "        [ 9],\n",
       "        [ 9]], dtype=uint8)}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 4.02 ms\n"
     ]
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((5000, 400), (5000,))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 4.14 ms\n"
     ]
    }
   ],
   "source": [
    "X,y = data['X'],data['y'].flatten()\n",
    "X.shape,y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10], dtype=uint8)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 2.48 ms\n"
     ]
    }
   ],
   "source": [
    "np.unique(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 3.11 ms\n"
     ]
    }
   ],
   "source": [
    "weights = loadmat('../data_files/data/ex4weights.mat')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Tue Oct 18 14:57:02 2011',\n",
       " '__version__': '1.0',\n",
       " '__globals__': [],\n",
       " 'Theta1': array([[-2.25623899e-02, -1.05624163e-08,  2.19414684e-09, ...,\n",
       "         -1.30529929e-05, -5.04175101e-06,  2.80464449e-09],\n",
       "        [-9.83811294e-02,  7.66168682e-09, -9.75873689e-09, ...,\n",
       "         -5.60134007e-05,  2.00940969e-07,  3.54422854e-09],\n",
       "        [ 1.16156052e-01, -8.77654466e-09,  8.16037764e-09, ...,\n",
       "         -1.20951657e-04, -2.33669661e-06, -7.50668099e-09],\n",
       "        ...,\n",
       "        [-1.83220638e-01, -8.89272060e-09, -9.81968100e-09, ...,\n",
       "          2.35311186e-05, -3.25484493e-06,  9.02499060e-09],\n",
       "        [-7.02096331e-01,  3.05178374e-10,  2.56061008e-09, ...,\n",
       "         -8.61759744e-04,  9.43449909e-05,  3.83761998e-09],\n",
       "        [-3.50933229e-01,  8.85876862e-09, -6.57515140e-10, ...,\n",
       "         -1.80365926e-06, -8.14464807e-06,  8.79454531e-09]]),\n",
       " 'Theta2': array([[-0.76100352, -1.21244498, -0.10187131, -2.36850085, -1.05778129,\n",
       "         -2.20823629,  0.56383834,  1.21105294,  2.21030997,  0.44456156,\n",
       "         -1.18244872,  1.04289112, -1.60558756,  1.30419943,  1.37175046,\n",
       "          1.74825095, -0.23365648, -1.52014483,  1.15324176,  0.10368082,\n",
       "         -0.37207719, -0.61530019, -0.1256836 , -2.27193038, -0.71836208,\n",
       "         -1.29690315],\n",
       "        [-0.61785176,  0.61559207, -1.26550639,  1.85745418, -0.91853319,\n",
       "         -0.05502589, -0.38589806,  1.29520853, -1.56843297, -0.97026419,\n",
       "         -2.18334895, -2.85033578, -2.07733086,  1.63163164,  0.3490229 ,\n",
       "          1.82789117, -2.44174379, -0.8563034 , -0.2982564 , -2.07947873,\n",
       "         -1.2933238 ,  0.89982032,  0.28306578,  2.31180525, -2.46444086,\n",
       "          1.45656548],\n",
       "        [-0.68934072, -1.94538151,  2.01360618, -3.12316188, -0.2361763 ,\n",
       "          1.38680947,  0.90982429, -1.54774416, -0.79830896, -0.65599834,\n",
       "          0.7353833 , -2.58593294,  0.47210839,  0.55349499,  2.51255453,\n",
       "         -2.4167454 , -1.63898627,  1.2027302 , -1.20245851, -1.83445959,\n",
       "         -1.88013027, -0.34056098,  0.23692483, -1.06137919,  1.02759232,\n",
       "         -0.47690832],\n",
       "        [-0.67832479,  0.46299226,  0.58492321, -0.1650184 ,  1.93264192,\n",
       "         -0.22965765, -1.84731492,  0.49011768,  1.07146054, -3.31905643,\n",
       "          1.54113507,  0.37371947, -0.86484681, -2.58273522,  0.97062447,\n",
       "         -0.51021867, -0.68427897, -1.64713607,  0.21153145, -0.27422442,\n",
       "          1.72599755,  1.32418658, -2.63984479, -0.08055871, -2.03510803,\n",
       "         -1.46123776],\n",
       "        [-0.59664339, -2.04481799,  2.05698407,  1.95100909,  0.17637699,\n",
       "         -2.16141218, -0.40394736,  1.80157532, -1.56278739, -0.25253004,\n",
       "          0.23586497,  0.71656699,  1.07689092, -0.35457279, -1.67743058,\n",
       "         -0.12939255, -0.67488849,  1.14066535,  1.32431237,  3.21158484,\n",
       "         -2.15888898, -2.60164082, -3.2226466 , -1.89612906, -0.87488068,\n",
       "          2.51038628],\n",
       "        [-0.87794907,  0.4344112 , -0.93161049,  0.18390778, -0.36078216,\n",
       "          0.61958137,  0.38624948, -2.65150343,  2.29710773, -2.08818098,\n",
       "         -1.86382323,  1.06057836,  0.77562146,  2.1346861 , -1.14973702,\n",
       "         -0.52081426,  0.99743429, -1.48309353, -2.3139424 ,  0.29517333,\n",
       "         -0.38704879, -2.20607697,  0.30702191, -1.17646114, -1.63462966,\n",
       "         -0.82467661],\n",
       "        [-0.52746527,  1.21564288, -1.50095981, -2.03195359, -1.52366734,\n",
       "         -2.43732079, -2.37570311, -1.39987277, -0.88735315, -0.63278873,\n",
       "          1.50450176, -1.580763  ,  0.58599217, -0.77540416,  0.94257331,\n",
       "          2.10919653,  0.54479132,  0.43773612, -1.28024228, -0.04360994,\n",
       "          1.4774997 , -1.13276949, -0.72846904,  0.04734716,  1.6574566 ,\n",
       "          1.68540944],\n",
       "        [-0.7490154 , -0.72249056, -3.15228173,  0.36577778,  0.19811362,\n",
       "         -0.73059946,  1.65263918, -2.300357  , -1.87468162,  0.98095387,\n",
       "         -1.58825159,  1.35434142,  2.17895331, -1.99239762, -2.00371362,\n",
       "         -0.388613  , -2.33992976, -2.91719062,  0.99398645, -2.70476768,\n",
       "         -1.27139772,  1.86091461, -1.20519404, -0.38014194,  0.7087181 ,\n",
       "         -2.11014003],\n",
       "        [-0.6665468 ,  0.53601845,  1.30307573, -1.03372714, -4.03084753,\n",
       "          0.58173469, -2.65717902,  0.80379994, -1.09241928,  2.49910058,\n",
       "          0.362008  ,  0.66195337, -0.92160534, -0.83123666, -2.00200952,\n",
       "         -2.94897501,  0.64564202, -1.10114694,  0.74510309,  0.58506717,\n",
       "         -1.99545251,  0.62591105,  1.80596103, -0.22309315, -1.40442136,\n",
       "         -2.1319153 ],\n",
       "        [-0.46089119, -1.43944954, -1.21809509,  0.71093011,  0.45216919,\n",
       "         -0.35953381,  0.62284954, -0.67005297, -0.7069138 ,  0.06311351,\n",
       "         -1.23199074, -1.74645233, -2.71960897, -2.21437178, -1.69307505,\n",
       "         -0.90927394,  0.87852311,  1.18664814, -1.87041262,  0.39796295,\n",
       "          1.72113872, -1.36934055,  0.8580668 , -0.24779579,  1.28009118,\n",
       "         -1.32752042]])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 4.74 ms\n"
     ]
    }
   ],
   "source": [
    "weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((25, 401), (10, 26))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 1.78 ms\n"
     ]
    }
   ],
   "source": [
    "theta1,theta2 = weights['Theta1'],weights['Theta2']\n",
    "theta1.shape,theta2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HkO2oxC1m8C7TPy2WJpxmEvsfMJ2I4Hg8YftSPKOGv9/3M+bz/fnn392vWjRIgDAggULvG2bbbZxvf/++7vmNDR27vk6F0oD9+ncuXMBIJAZ4JhjjnHNaY20K5tcbJ5vueWW3vbpp5+6njdvnuvPPvvM9S+//AIA+Ouvv7yN51n9+vVd16pVK3MHLGIH3yv4/jpz5kwAwOLFi72tevXqrvfbb7/Q72ViDdZOrBBCCCGESBx6iBVCCCGEEIkjFu4EbNJlkwWbfd99913X77//PgCgU6dO3rbDDjuE/kY+wSbAtWvXuraArt13393bunTp4pq375NoDowyffN5mckLAO69914ACCSSZxNar169XLPJw/omW+Z1Pi++tuz+wdf5nXfeAQB88skn3vbGG2+4/umnn1yzm8Fpp50GADjyyCO9jYM4eL7ExbWAj++DDz5wfcstt7j+4osvAv8CwFZbbeV6p512cn3FFVe4btGiBYDgeW9suZR57tx///0AgDvvvNPbLr30Utd9+vRxHeWykktKGrN8rjwvGD4XGxdRubbjct6lgdcVWx9uv/12b3v22Wddr1ixwvXWW2/tettttwUA7LXXXt42a9Ys13vuuafr4cOHu65cuTKAsr8f2/XndZPPu6TrmMR7YlkT5p4HBO+zq1atct27d28AwXtutWrVXJ999tmuL7roomJ/55/MKe3ECiGEEEKIxKGHWCGEEEIIkTiy7k7Aph3bjv7vf//rbV999ZVrNqUuXVq8rDBHHHfs2NE1b3knnSjz+W233eZ64cKFAIBHHnnE29jEw1kckoSZGNg0xGaul156yfV1113n2iJud911V2/79ttvXXM+XTahmqkxW+ZCvrYcdc+1sF9//XXXlu+Xxze73DB8Dmbiueyyy7yNTTpReVazDfcHmyCffvpp119++aXrhx56CABQsWJFb6tQoYLrwYMHu37hhRdcm1vFd999522VKlVyHWWKzCfC3Fd4brHLCptbo8zx2YDXPz7+KHO1tXOkPZ8XzyO+/lWrVgUQjMDfcccdN/SwcwqP3+uvvx5AUTYbADjuuONcH3LIIa4bNmzounz58gCC/c8uJs8//7xr7l/7vbK4//BaYb8/bdo0b+NnB3YzYBO3XXN2w+N8plFujmHuJvmCud1x/82fP9813y/5uoddY5537PZ21FFHubYMMv/E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FBSsKywsLKtDyilLly7VfFmPWbNmrU6nrKj6I4j6ozj53CelXVPTeohNpVKYPHnyhh9VjGnSpEna30mlUpgwYUIZHE3uad68edrfSaVSmDRpUhkcTe5p2rRp2t9JpVJ48803y+Bock/jxo3T/k4qlcLUqVPL4GhyT8OGDdP+TmFhoeYLkUqlMGXKlDI4mnhQvnz5tGrcqz+C5PPzBwBUrFgxrf4AdI8B0nyILSs22aTIq2HTTTd1/ddff4V+xvjzzz9DP5tPlCtX9CLCfcPt1g/52gf5Cl9D1gyPe/vMunXrQj8bdf3t81Hf29iwfgzrWyC4rqjPNj5sLGy2WdHtkecWjw8hRG6RT6wQQgghhEgceogVQgghhBCJI6fuBGbO+/bbb71t9erVrqtWrer6+++/d22mHXZo3nLLLV3/+uuvmT/YHLHFFlu4fv/991337t3btZm/br31Vm/jgJEkmb/YfGvuE3xt2QTMn/3tt99c//HHH2V5iBkjyh2Gz2XVqlXFPr/NNtuEfq+goMB1mIsOf4/h+ZJ08zkfP5uDN998c9dr164FAHz99dfe9vPPP7uuVq1a6PfiCLtB2PnyeUfNF54jv//+O4DgWIpyb8lXws538eLFritXruy6SpUqruXClV9EzZ2w8cHufcwvv/ziOh/GB/fD1ltv7drWDSB4z8o22okVQgghhBCJI6c7sfYmw7uv3bp1c807VfPmzXNtO0ennHKKt5133nmu99lnH9f8tpAUePdn/vz5rs844wzX3DdDhgwBAOy+++7elpTdyPXhnWfbheQI3a+++so1747UqVPHdc2aNQHE9y3YdpZfe+01bxs5cqRrtjqMHz/ete0g8i47X2eOkOc3Zts54owTvLPQqFEj11tttZXrJO3gG7xrv2LFCtdvv/22a8sIMHHiRG/75JNPXHfv3t31FVdc4TqX44l3Q1jzDsjcuXMBBHcQeSefx8See+7pev/99wcAVKxY0dviOncySVRg5YgRIwAAl19+ubcdd9xxrgcPHux62223db0x9Fk+Ydec77dLlixxvXLlStdsLbbv8TMJ78q2a9fO9fbbF2XMSpKVi9eYH3/80fXDDz/s2tYNADjkkEMA5CYoVjuxQgghhBAiceghVgghhBBCJI6cuhOY6djMpEDQlMqBTGwKMxPqM8884228tc/mnr333rvY9+KK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XLVq1XWpVKqsjiWnLFu2DKtXry6XznfUH0HUH0EKCgryuj/WrFkTi/4oV65cqOZqhGVdmXBD+kPzJUg+9wcAzJo1a3U6ZUXVH0HUH8UpKChYV1hYWFaHlFOWLl1aqjU1rYfYVCqFyZMnb/hRxZgmTZqk/Z1UKoUpU6aUwdHknkaNGqX9HY2PIKlUCuPHjy+Do8k9RxxxRNrfSaVSmDhxYsaPZdNNN3W95ZZbuv7ll19c//XXXxn/u0yzZs3S/o7mS5B87g8AqFixYlo17tUfQdQfxSksLMSkSZPK4nByTtOmTUv1ObkTCCGEEEKIxJHWTqzIDJtsUvTuwObPMHgHqaxNokIkic02+9/y9cknn3jbSy+95PqUU05xXbVqVdd//vknAM0nsXHClgu+FzF837H5srERdZ+2vtkY1w/uh7D+4bGSrf7RTqwQQgghhEgceogVQgghhBCJI6fuBLbdHLVFvcUWW7hmE8j63weAX3/91fUff/wR+vdKMt1nCjsuM3eur7/55hvXv/3229/+VpUqVVxvvvnmrn///fd/fJxJhMcH9ymbv6Kuv8gvLIhr6tSp3ta9e3fXc+bMcd2viDvFYgAAIABJREFUXz/X2223HYCS557IP3jNKMmtK+yeA2Q3YPCfwudo94w+ffp429ixY12z+82pp57qerfddgOwccwXHh9r1qxxzdfc7snly5f3tny+H/MY4meuVatWue7WrRsA4Morr/S2/fbbz3VZuqRoJ1YIIYQQQiSOrOzE8tM7v/HyW4/BT/fTp093vWTJkmK/V6FCBW9r3ry5a3tzXP9vZws7r88++8zbXn/9ddcvvviiaz5fe+PhPmrdurXrNm3auK5evbrrfN15tH7gtEn8drx48WLX2267rWvrG+5H7qO4756I0mHXka89v/0///zzrn/++WfX11xzDQBgr7328rY4ziFeu9gqxRaZdNY3Hvdhlot8C1Sx+c/9xfeRlStXuv7222+LfW/evHnexruy7dq1c7399kVpPePef3Ze3333nbfxObK1Ytq0aa779+8PIHhfzadgL762b7/9tusbbrjB9eeff+764IMPBgBceOGF3lanTp3Q3477mIiC7518rYcPH+56xIgRri1XrVm5AAV2CSGEEEIIEYkeYoUQQgghROLIijtBVEDVggULAAS3qN966y3Xy5cvd83mNDMv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8LjmNZfX0ajsN+QTK4QQQgghYoc2sUIIIYQQInZEwp2Aj6732GOPhO1sVrf2P//809tY85F3HOF7/fbbb11v3brVdcmSJV2XKVMm13dE5ai/IGDz3d577+36t99+cx33Zy7yRiIzF88R5sADc2Ik9txzT9d//PFHru8Swthrr70ABNcUXnu3bNnimtcgW4d5bc6kdVhkJvx+3bhxIwDg559/9rZ9993X9QEHHOA6Kq4FOokVQgghhBCxo1BOYsMc5O10hHf0K1ascP3rr7+6/uabb1x/9913AIA6dep42yGHHOJ6n332cc0ntFHHTqH5Xi+55BLXHJlZt25d1/fdd1+utjjddxj2C9GeNwDMnTvXdePGjV3r9CPcGT+v/x4H+B5+//13AMBNN93kbe+++67rdu3aue7cubPrqlWrBj6fyfApC1u52NpjawUHJO0Klg0eS3b6CgArV64EAEyaNMnb3nvvPdfz5893vW7dOtdXXXUVAODf//63t9mpf9zgcWPvaR4zPFZ4HsVxXeH7CpsjPB/smcY5gI/vc8GCBa579+4NAPjyyy+9rWbNmq4vu+wy1x06dHBtzz0d64ZOYoUQQgghROzQJlYIIYQQQsSOlLkThAVlrV+/3rUlPn/ppZe8bfny5a7ZnYAdjX/55RcAQLly5bztxBNPdG1mHeB/yYCNqJvYzWzz/vvve9tHH33kmvuR/2bEiBEAgCeeeCLVl1ioWH8sXbrU266++mrXnTp1cj106FDXHGwRF8LyUCbSbL5LZOYCEucX5s/x9/LfRh02V5pJrFevXt42btw41w8++KDradOmub755psBACeccIK3xck0GDY+bH1jU+Hq1atdc2EWXlesMEGYe07U181k4Hlm7xEAmDp1quvbb78dALBo0SJv4zlSvnx51+aasv13R5mwtYaDHz/77DPXzz//PIDg+GnYsKHrPn36uOaxF0XXgkRz5/PPP/e2V155xTW7rlWsWNF19+7dAQC1atXyNr7XqLqQ8L3/+OOPrnmdtGBYdiGYMWOG6yuuuMI191vfvn0BhLtgpBKdxAohhBBCiNihTawQQgghhIgdBepOEJbvlY/l2RxsEXBsxqhevbprNttw1gLL2ffDDz9425QpU1x/8MEHrsePH++6QoUKAKJrHjMz+LHHHuttlnkAAB5++GHXbNpZtmxZ6i8uDZg5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TiCEEEIIIWKHNrFCCCGEECJ2aBMrhBBCCCFihzaxQgghhBAidmgTK4QQQgghYoc2sUIIIYQQInZoEyuEEEIIIWKHNrFCCCGEECJ2aBMrhBBCCCFixx7J/HHp0qW3ZWVlpepa0srq1auxadOmIsl8pkyZMmnrjyJFiuTSXH1tZyuxrV69Ghs3boxNf6Sa/PSH5ksQjY8gGh9BMnl8AMDixYs3JlNWVP0RRP2RG60hSW5is7KyMHPmzHxfVJRp3rx50p/JysrC3LlzC/5i8sCee+7peo89/vcYf/vtN2/7+++/d+r7GzdunPRn0tkfqSa//TFr1qwUXE36adasWdKfycrKwuzZs1NwNemnadOmSX8mKysLb731VgquJv20aNEi6c9kZWVhzpw5KbiaaFC8ePGkatxn8nwBgH333Vf9QSTbH4DeMYDcCYQQQgghRAxJ6iRWpBd2EZg/f77rd955BwDQrl07b2MTw86eygohhNh12G233XJpfo/onSISweNm9913d/3nn3+63llXx1z/Z4F+mxBCCCGEEIWANrFCCCGEECJ2RNqdgI+j9957b9cWjf/77797WyqPq9OJBW0BwIcffuj6qquucr1mzRoAweC0KlWquN4VTD+crWGfffYBEBwHv/76a6FfU6pgkw0H+PH98twxzYF/f/zxRyovMdZw39lYAnL6j9eaOMFjhbXNjUxbJ2w+8PPk++bn+NdffxXehUUIXjO4b1avXu26d+/eAICLL77Y204//XTX/B6OOonWRYbfI9w3PFYybZ4UBPZO4vfsunXrXJcrV8417+UKYq+mk1ghhBBCCBE7IncSy78G169f7/rNN990/fPPPwMAjjnmGG+rU6dOwu+I66mJwb/6HnjgAdeLFy923a1bNwBArVq1vC3u950X+Fczn6RMnDgRAFC8eHFv45Q/BZlPtzCxX7vff/+9ty1atMh1qVKlXPNJyldffQUAOPHEE72Nx0pcT6GsPwriefKpzLfffuv6ueeec239V6NGDW+L4qkMzwu+r08++cQ1rx9t2rQBAOy3337eFtc5wtiJz8aNG71t6dKlrqtVq+Y6Ozvbta2du8IayuODT1RHjRrl2iyABxxwgLfFaUywNZP3FJ9//vk/fo5PDHnOlyxZEkCwv+LUH3kh7EQ67G/22msvAMCECRO8rU+fPq6feeYZ18cff7zrgphjOokVQgghhBCxQ5tYIYQQQggROwrdnYCPoA0OVJk2bZrr4cOHu2bzlwWlsAmoUaNGrq+44grXRx11lOu4mIfYHYKDuZ5//nnXTZo0cX3DDTcACAahxOVedwYeN2wmuuaaawAE+4hN6XEynydymbjzzju97d1333XNpkE2m27evBkAULt2bW+77777XDds2NB11AO+uD82bdqU698LwuT50EMPuX777bddt27dOtc1RAmbD7x+TJ8+3fWQIUNcf/rpp67N3N6rVy9v4/WDxwTPuXTCz5aviU3HU6dOBQDce++93vbBBx+45mATdq8577zzAATXjEyF+5HHPetOnToBCK6nUQ/mClsLBwwY4Nrca3j88LuB53ndunVdn3zyyQCA9u3bexuvO+xiFLf3cKJgNx4jfG/cb1u2bAEAPPvsswn/fd999y3Q62SisSIJIYQQQgiRBNrECiGEEEKI2FHo7gR8ND169GgAOdHTAPD666+7/u6771yfffbZri0TAZv6XnrpJdccXWyR6kCOqSmKEcVAzlH+Z5995m2XX365a462Z7OIuVVwHtBMhU08bK547bXXXJtrQdGiRQvvwlIEm0fNFDp58mRve/jhh12/9dZbrtkUaq42nOeRzcnHHXdcAV5xwcPP3DKTAMCll14KILg2dO7c2fWO5gN/748//uiaMxK0bNnS9cEHHwwgWusHzwFbW++66y5ve/LJJ12bOwQA9OzZM9d3sYn48ccfd80uWUcccYTrdLrl8H3/8ssvrjk6+tZbbwUQXDfZ7Yyf/9y5c13Pnj0bAPDII4942wknnOA66i43O4JNxitWrHA9bNgw15zv07KexDUCn9dQm8NATnajypUre9vy5ctd87gylywAuO222wAETeddunRxzdH37LISpXWD4fHw0UcfAQBmzZrlbRdeeKHrEiVKJPycuTqy+9KgQYNc8xpS0OuGTmKFEEIIIUTs0CZWCCGEEELEjkJxJ+Bo2SlTpri2KGt2G+AISE643LhxY9d2pM1ZCO6++27XY8eOdf3oo4+6NnNqXhL5FhZ8LRbJGFbUgKOH2cxpx/NsNmHTRVTNGPkhUUQkEMxqYWZRTt6eCZh5k81V7Apw9NFHu2YT6iuvvAIgOA/r1avnOt1zYEdYIm0AmD9/vmtzG2nWrJm3JWPq5bHEWR64XCJnbrDriJLbDpv0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f+/0dWYq++yzj2vu699++y0dl7NT8PXzuEpk/mJ4fERxjiQD3x+vGT///LPr1atXu16xYgUA4Oabb/a2ChUquL799ttdV6lSxXXU+ymRmfOrr75y/csvv7jmdady5coAgmtKJqwf1h+//vqrt7322muub7vtNteHHnqo63vuuQcAULJkSW+L4rPn58VrWpjbiMHjg9+h/P6Ikzk5VfCe4pNPPnF9ySWXAAC2bt3qbSNGjHB90kknueb+TTc8LjZt2pRQV6pUCUD4OzKK6CRWCCGEEELEjsidxPIJwaJFi1yPGjXKdenSpQEA3377rbfVrl3b9eWXX+56v/32c82/NAsb/hXEJ0Qff/yx6zp16gAAihUr5m1hJ23fffed688++wwAUKNGDW/bd999E37HrgT3F59aTJ482XXx4sVd5yeiOt3wySOfFtmYAIInUUapUqVcV6xY0TWfHNi42dHJTrpIdPL4wQcfuH7wwQddjxs3znW5cuUAAO3atfO2q666yjWfykbxBC4MO323k2YAOOecc1zzaRI//0GDBgEAunfvnupLLFRszvN6a6esQHCs8HNev349AGD//fdP9SXmC7uv77//3tumTJnievPmzbn+Fsg5Xef7sncOANSsWTPX3wK71vuD+2vq1Kmue/To4doyGR1wwAHeNmDAANd8qm9rDZAe6wbfzzfffOO6a9eurmfOnOn6iiuuAAAMHz7c26K6/hs6iRVCCCGEELFDm1ghhBBCCBE70upOYMfU7EDNjveXXXaZ6zJlyrguWrQoAGD58uXe9t///tc1BzMMHDjQdfny5QGkx62Aj/V//PFH10899ZTr3r17AwBKlCjhbXyt/B1btmxx3bNnTwBAv379vK1Dhw6uE5mT40RYjuAw80wiM/P06dNdX3PNNa779u3r+oQTTgCQXreT7eF7sH7goC1O/j1+/HjXy5Ytc80BPQabkzt16uT6wgsvdG0BklE1J9o68MYbb3ibzQUg6FLRokUL17YmcOr7HwAAIABJREFUHHvssQm/N04uBIxd94EH5hT9ueCCC1yzOwEXFbjpppsABF2UbC0Cgi4rcQr4svHL45+fLa8r7MbGQS1RxMb9hAkTvC3MFYRNwfbs2NWMAxfvvPNO11z8J44Br8nA4+CHH35wzS4a3Ddt27YFEHTbYBe1p59+2jW/k9PRj2HvwAULFrjm8W5/w0GvUQ/y0kmsEEIIIYSIHdrECiGEEEKI2FHo7gSJcjq+99573sbH2JxZYMyYMa7Lli0LIBiFyyZ4Ninee++9rm+55ZZc11BYx+NssuCo0rVr1yb8m0SwKezggw92ffrppwMAPvzwQ287++yzXafjfgsCMwdyf7Fp08xqQLBv7HNLlizxNnYhqF+/vuvOnTsn/I50ws+IzZzm5sB5THlebNiwwXWiiNIwtxJ2PeDIZRtDv//+e56vPdXw81+6dCkA4MYbb/S2jRs3uuYIWzarm2sS31ec5kUYZi7m/KZ9+vRJ+LcTJ050feWVVwIA5s2b521snmZ3r6jDa6hlrxkyZIi32ZgBgu+XevXquTZXm6i6TthYZTOvZewBgu4T3B/2HDnnOq+R3E8PPfSQa3M5iFLO04LA1khe93m+nHvuua5PO+0019a/vFZWr17d9Y7W4cLA/l9e455//nnXPLb5Gs8//3wAwTkf9bVRJ7FCCCGEECJ2aBMrhBBCCCFiR6G4E/BxNR9TW5JdTiTMkdePPfaY66OOOsq1HZFbuUQgaHblxOUjR450bSayrKwsbyusSHQuhbty5UrXnGXAihzk5fiev8/MYi+88ELC72WzWVRM5mHwfdmzGTZsmLfxWOrfv79rjrY3XnnlFddcdpSjetkkF5WsBDxH1qxZ49pcB0aPHu1tfM38OTYX2Zy6+OKLvY0zeEybNs01Z8to2bIlgKCrTjpMrDwmOGF3r169AABffPGFt3EUsZnGgOC4N7NomKkv6uazHZHItQYIumJwknszi7JpmTM7NGzYMOF3RxF+f1gxA3adYDgCf+jQoa7NHSMq68H2mDnbouSBnMw7QNBlgtcEy1qxatUqb+OIdc7ycffdd7s29yXu26i6WuQHdpPgLEgNGjRwzS4Ytj7wfOKiOTzn0r2WhLkohhVROvroowEE91P5dSMJK4Ne0CXPdRIrhBBCCCFihzaxQgghxP+1d+bxVlXlH375NWmKpVdxQC8OOKA4MDiQAySgIgqaomKZggmI4YQzmpqoiaRpmqZCzgWWU4JCgkM4ZChhCA5IJooSaA5pc/z+6PO+59ncvbv3cM+5Z+/L9/nr/ax7zrl7r73W2nuv7zsIIQpH1dwJuJXMrWnW6XW5j/WFr7/++rDpQpAWWZ1V35mJzemS4MngL7zwwiadQ3NhHzBilMmQKet5LeamSDVpSfApEXtkrlkyijKPciBlGSaEvvbaa80sGSlLCY2uAJRNPOMDa1+zLvg222wTdl76gxLUCy+8EPa5554bthc2oHTFvmMkKqXQzp07m1nSLWPGjBlhP/nkk2FTXvQxxGj3WsiIlETvvffesGfOnGlmZscee2y0DRo0KGweK8eHy2NZkhqlr7xKymn4WOB6y+TtLA7DSHR30eC62b59+7DzMkey4LXj9XrppZcafJbXlmsv1xLPcOHrsVn6+KkVPm65Zuy1115h77nnnqnf88/zerIoDt1v7rjjjrA7duxoZqUsFmatw53A+5HrC58NOFa4Vng777dz5swJe6uttgq7VtkJfLyyIAPXgiw3Ax8bq+oGwTHJggpnn3122IcddljYnkkq61muKWgnVgghhBBCFI6K7sSm5YA1S+7uDBs2LGzfIfIdN7PkW0w5Zdr4Bs5Sel5K1Ky0C9xSztZ8K2HQhO8gmZlNnjw5bO+zcsvEer9nvR3zOPgWnpe3ae4QTZw4MWzfsWaOT77RsXwi3yw9iOuNN96INuaJ5U5VLXaZ0nYAuPvK0q8LFy4M23fUx40bF23cfeWuLUsb+3XmW3nWLjYVA/9eLXYTOGbfe++9sFlm13cLuaZw3eE84k6J50v89NNPo42729/61rfC5nqUlx3JrLzPnueVQYwsL/v888+HzfWob9++ZlbKo21WysVtlp/zzoJjhaqC31e4o8axzkDYZ555psFnuLvJOdmhQ4ewa7mG8trzXpk1X32tYH9k5SznbjM/09rJKrFK29cY3rcYSL3LLruEXau54+fBMf7ss8+GzWBv3kN8LjWWsz4Lfo/BcFx7OnXqFPbSpUvNLFkqu+z/ucrfFEIIIYQQokboIVYIIYQQQhSOiroTZMk6I0eODPujjz4K2+Wr7bbbLtrKldLTyJIBmE+yJaBsM3369LB79eoVNkugllPek9v2aQ77/K358+eH7blozUpybEtJHlmBbiwPOmnSpLC9JCxlcl7Pt956K2z2x49//OMGbZQGs9wrWoo0OYo5bxctWhQ2g0vcjYCBTJQRKcnQlcLzZTL3J1186Hqw6aabhu1lfWuR65DXiOVQGZDm5ZaZx5SlqFnCmnKxuyfwXCnB083ghhtuCJtjNi/w2rj7zU9+8pPUz3I+MIjLg7x23HHHaMt7Sd4sl4qHHnoo7HfffdfMssvmMgczr7//Hl1X2B8XX3xxo8dRS7KOw68/j5muSewDjhXm0y0KWa6NbPdrymcOuk6wD+hm4Gvu/fffH209e/YMm+5vtXbZ4zraFLcwdzOiGybd70ja8wrXSD53sP947/H+ZrB7ucG02okVQgghhBCFQw+xQgghhBCicFTEncC3m1lOdcSIEWEzEo7SsMt61cy7R2mla9euVfs/xPuD0ia3yxkFzBycLlNkbd/TPYHb9h988IGZJUtynnnmmWEzuvv8888Pe4sttmjwW9WE0gajxX/5y1+GTXn8ueeeMzOzAw44INpYMpElAilBeBQ+c8OydGqtZT+XdVjmkdIlXT6Yz/Pggw82s6S7AUsoH3LIIWGn5UCli88DDzzQ4O9mSSlsk002MbPauJtwTWA/0R3J3SeYD9RL0ZqZLViwIOx+/fqF7eV3ly1blvo9zslaj5U0eEycU2PGjDGzpMzHiGSOG88MY2a20047NfheHs87Cx4r5eByxm3amsu+ZX5zrqd1dXWpx5EXKIn7/Jo6dWq0MXsFZXWuJZ6vvdbSeGNw/eCxMl84XQo33HBDMzN77LHHoo3XltH1zHjkmWRmz54dbcxPzXV26623DtvXq5YYJz6X6ebA+yHdzTj2PU8/n12YS5hZXJiz2/uNc455YonnYTYze/nll82seRlwtBMrhBBCCCEKhx5ihRBCCCFE4aiIO4HL3IxGY+Q4S7mdcMIJYfuWdyVKO1L6YeLhuXPnhu1b69VI3s7f9C11j5I3K0kXZmabbbZZ2LNmzQrbJRCWjKXUzz6lZOGSIX+X5Vl79OgRNiWFSmSCKAdKDSz9etVVV4VNNwOXGigt9+/fP2yXu82SZRJ9PJ111lnR5q4T/HtLwvHh2QAoR7Fv3G3AzGzw4MFh++fpVkKZi/2UloHBk/ybJSORKXmxJKBH9TYlkXqlySoDS3nU148777wz2uhCcNNNN4V94IEHhu3nwwT2/F0WO6h1idE02De0Xa7kfGJGiqFDh4Z9zz33hO2RyF70wKxY5XZJY+OTf2dBB0rHnp2Cn3WXLbPyssjUAs79NFn95JNPjjaeF5P0n3jiiWF7hhSed1Yy/LTMQNV2R/LrxDHLjDcc68y0MHDgQDNLrnnsAxaHYZ+66wBdcnr37h023ZToGubFaijfV8u1wNctru1HHXVU2JdffnnY7De/N7HP6OrG6063AP9/vNZct7MyRHh7c/pBO7FCCCGEEKJw6CFWCCGEEEIUjoq4E/hWOyPHGQ1+9NFHh01psrkyA7elmdCa0Zf8f4ceeqiZVSfKMi2JMpNpe6S9WSmJPz9rVuozShcsBEF3ARaQcFmDCd2PO+64sBltTReClo6m5f9jYn4m76fk8fHHHzf4HiVAulSMHz8+bD93RtrXOvKa19SzSDBZNmUfJiDnPOrevbuZJRNHZ7kQsP2KK64wM7Pbb7899XePOeaYsHfeeeewvc9ayoUgrT65WTLxNl10vPABI4r79OkTNjMSUPry32ARhUsuuSTsLbfcMmyuH7WE15bX3wtZmJlttNFGZpac75Q8OXfcVcesFKncUtc5L/D+w3uC9wPXShaoYT/mJSMBrx2Lddx9991h+zqQldCf7iS877hLCrMP8d7GtWT77bcP27MSMYtMNfrL1wpGw7PgBwuW0M0uDUrrzDxx7bXXhu0uGLfddlu0cY3i2ks3FadWY4ZuJISZk5YsWWJmSVcAujcSjjnPWsD1hplkqlloSjuxQgghhBCicFS07CzfZrlbsO6666Z+vrE3f74lptl8k2ZQGQNYTjrppLA9EKgawRppuRsZxMZ8bZ6X0Sx5Xv4W4+U+V/7drJ3nhQsXJv6vWfKNsta7kGlwrGQFDvmOEs+LwW2nnnpq2LvuumvYnguXfVDr8+Z5+XHxLZ3XnHmVOcY9SCAr6GnevHlhX3311WF7Pj/f2TZL9t1pp53W4NhqDY9j9913D3v//fcP+7777jOzZB+svfbaYU+YMCHsW2+9NWwvrciADgYM1qIUcRpcG7jbPHny5LCXLl0a9qhRo8wsOV8Y2MXPppWtbg1wXUlT3LgOMACY7T72dthhh2g78sgjw2ZgTi3nC9eBrBzcN954Y9g+hnjv4HlzZ5G5u70f2V9cS6iaePCSWUlVo8pRqXtvWiD1tGnToo3rBOc2r5efV9Z99brrrgubwaOXXXaZmZl95StfiTbuOpKsALiWgteX58Z88a5Qm5XyITOgnOOJ15pluz1Qmyrz9OnTw2aAcqXRTqwQQgghhCgceogVQgghhBCFo6LuBMyJtnjx4rC5Fc8grzSJl1IeJTQGMLgcSEdzOrNTJqSs4LJ6NaTlNNmfzt4MOMmSoLy9KRJVmpzCvsuLJFouadeGUplLOWbJ8UHpx+X4vATlrEyaGw2vF6UcyjcOZWHm82MwA10LPEfxsGHDoo2BgXT9ycu44XFQomQAnwcTsA+YL3jSpElhU0rzkszDhw9P/R95camgbM1ry/y3d911V9geLMlxz0A4dztamaIHdFGypQuA34/oTkXXE8J1x8fC6NGjo43uYHnJE8tjpusE3W94D/L7JccH+47tzB/r44NziPd6HgdzqzIQudKk3W833njjaJsyZUrYLEvNoE3/DbpJMKiWzzAMfvLzyuv9JQv2Ge8xzNnuLo0cT++++27YvBczgNTvIXQXoV3NksXaiRVCCCGEEIVDD7FCCCGEEKJwVMSdwPPp7bffftHG3J+MlGauSi9xRomHOeUomzIa0iUjRtVRNmE50lpG5reU7OSyY1bZX+a7y4tc3BR8XDCy3EsnmplNnDgx7N122y3sPMo8lFNchunWrVu0MQKUrid0h3GXmUcffTTaGH3u8rpZUir38ruU9zgX8j4mKEvxHDx3I0tFMnKfeaspDZ9yyin/838UiTPOOCNsH08se+m5dM2Sril069prr73MLP/jgGSNX7rJ+Pp7yy23RBulY5YCZyYZd0djLus8ZnghXF94nVlq2N2v6GpEebi+vj5s3jOcrl27hk1ZPmvcuFtDtceVu/8cf/zx0bZo0aKwfXybJa+59wfdaZiF4uabbw7bS++aFXetIGnuiGZJNwMnK89vmnsCxxOz7ND1gG4a/r3muDRpJ1YIIYQQQhQOPcQKIYQQQojCURF3At/OpxzBMm3MLEDbJW9GR2+77bZhUx7llrZ/hn9nRDG3x/Mo/VQal5KyogGLFH2clqid0diUyffYY4+w8y6F8vhc0mJiaJYBpVsI54v3DSPpWeZxzJgxYdMNwedJXqLumwNlXY+WZrEGZiZ55ZVXwmZi7qL0A8+V58jSjszW4e41XPPoWkW59cQTTwzby4YWVSZNKzRjVnIboasZpUy6C+y9995h+9rJNbRI9xFeR64PXn7VywybJe8NdNVhgaK0/mhKtLnPs2pGppuVrg0zLYwdOzZsltOl25YfH90kevfuHTbdHIs6NypBOfdWfrZLly5h052LLoEHHHCAmTVvjGgnVgghhBBCFA49xAohhBBCiMJR0WIH3EqmrMPky5SAy4HbzS4D5CXpdC2gvLX55pubmdnBBx8cbUz8XBT5dGVc+qHcw6wXTL6d93NMi6amOwFdcV599dXU3/CoY86n9u3bh83IW84Xl8KK5FbSFLxPGVHLcU95lOMj72PF4ZihVNqvX7+wu3fvHjYT1Dtrrrlm2BwfrVUq5bj3exAzl/To0SP1s3nMaFIJONZ9/ejUqVPqZ3n//uSTT6p7YFUgy62E82XAgAENvsfxz3GQdxe1vMM1ZsiQIWEPHjw4bM9a0Jw1WTuxQgghhBCicFR0J5bwrYhvN43tBhXJgb6W8M3FnaP79++f+vcivVHyWA855BAzSwbr8O9F2VEzS4573wFiPkfuFtBuDM6XrP5obTuw/4si7rg2hawgIwa8tmvXrsH3skqTFmlNWFX83FdnxY6kBWi1VjjuPY/9yraoLrwG3JX1QFKzyqzR2okVQgghhBCFQw+xQgghhBCicFTNnSALuQtUntYqE/lYaU2ysFlJ3m+KK4AQK5NVcnV1cBEQQhSPrHK1lUA7sUIIIYQQonDoIVYIIYQQQhSONuVs7bZp02aZmf2xeodTUzqsWLFig8Y/VkL9kUT9kUT9kUT9kUT9kaSV94dZmX2i/kii/mhIK++TJvVHWQ+xQgghhBBC5AG5EwghhBBCiMKhh1ghhBBCCFE49BArhBBCCCEKhx5ihRBCCCFE4dBDrBBCCCGEKBx6iBVCCCGEEIVDD7FCCCGEEKJw6CFWCCGEEEIUDj3ECiGEEEKIwvHZcj5cV1e3or6+vlrHUlPefPNNe++999qU853111+/VffH8uXLy+qPurq6FZtttlm1DqmmLF68WOMDrMr4UH8k0XqapDWPDzOzOXPmLC+nrGhdXd2KDh06VPOQasqq9Edrvb+Ymc2dO7es/jDLz5z5v//7734oK8A2txpsU9fUsh5i6+vr7Yknnlj1o8oxPXv2LPs79fX19uSTT1bhaGrPPvvsU/Z3NttsM5s5c2YVjqb27LvvvmV/p76+3n79619X4Whqz9577132d9QfSerr6+3xxx+v/MHkgF69epX9nfr6eps1a1blDyYnrLXWWmXVuO/QoUOrvd+ama2zzjpl9Udrvr+YmdXV1ZXVH2a1XVP9wdXMbM011zQzs3/961/R9ve//71Zv9/UNbWsh9hK8JnPfKZBG5/Y//Of/7Tk4dScNm3aNLDT+sgsu5+8vblvPkKI/MM1g2sF29P497//Hfbqts6K8uBY4sOKw7EkVh8+97nPhb1s2bKwr7/+ejMz23HHHaNt4MCBqb9R6ecU+cQKIYQQQojCoYdYIYQQQghROFrEnYByxJ/+9KewXQpr27ZttLlvhVlSsmhN8gUlQG7Pf/TRR2Zm9u6770YbZZ3PfrZ0udZff/2w11prLTNLSoT0TRGrH2ussUbYPt7+9re/RVtrmk/lwnnkZM0Xzr+8uOvwmGbPnh32jTfeaGZmS5YsibYtttgi7DFjxoS9ySabhK21YvWFY+nzn/982P/85z/Dfuedd8wsOf432KAUf5TmblAE/Lh5P05bG8ySc8TtvKwH1YbPKG+++WbYF110Udh33XWXmZmdfPLJ0TZgwICwOUbkTiCEEEIIIVZ7WmQn9otf/GLY48aNC9t3Ebp27Rptffv2DXv33XcP+0tf+lI1D7Hq8E3k/fffD/u+++4L+6GHHjIzS0Rg8s1wnXXWCXuPPfYIu0uXLmZmNmTIkGhr165d2K11p6WxQJamUPS36aydwmnTpoW9aNEiMzM76KCDom3DDTcMu7UG+WSpGL6bwB2YrDQ1aQGU3KVqKXj8ixcvDvvss88O23fX6+rqou3ee+9N/b0rr7wybFe/VufdeeLjgjuT//jHP8Iuej9x3PPe8NRTT4U9Y8aMsCdNmtTgN+65556wO3XqFDb7KY+kBSZRuXjllVdSv7ftttuG3blzZzPL7sfWAJ9XfCfezGzkyJFhMyuCZ3c644wzoo39U805o51YIYQQQghROPQQK4QQQgghCkeLuBNQ5lx33XXDdneCF198MdoeeOCBsLfeeuuwv/vd74bdo0cPM8u/dEE5k3LDqaeeGjYDMwYNGmRmZkcddVS00YWA5/uXv/wlbJcMp0yZEm2et83MbKeddgq7FlJoc8nKWUipl3KFnyMlWH6WMuEXvvCFsL1/i+RiQMmGss8ll1wSto+xjTbaKNoOOeSQsJublDpPpOVdNjObN29e2C550aVi8ODBYc+ZMydsBjLsuuuuZpZ022kpGZHnwuvFAC13LWAw14UXXhj2rbfeGnbHjh3D9vUoa27lnaz1IS3giHObc4ef9et/3XXXRduIESPCpvtb3u9BxNe9119/PdroVuLubGbJ+4uPFZ4r3eB4n84jXO+nTp0att8jGWy+dOnSsDk+OM+8P7797W9HW/fu3cMu4j12ZRhgf/vtt4f99NNPh815N3ToUDMz23jjjaOtpe4r2okVQgghhBCFQw+xQgghhBCicLSIOwFliN69e4ft29TLly+Ptvbt24fNrAYscVbEvHSUsYYNGxY25RyXLLIkUcL2ww8/3MzMTj/99Gg755xzwmaEMiX2vMvmfo6U/J9//vmwH3zwwbAZVfrqq6+a2X9rbTsffvhh2N26dQubsrrLhEXqI84FZrWgm4pHq7MfWxOcCzzHm266KezLLrss7LfeeqvB9yiPMgfmdtttF/Y3vvGNCh1x+VCi3HzzzcOm25Cvl4zAphsWXR+uuOKKBt876aSToo05hfNIVlaOP//5z2F/8MEHDf7Oewrzcb/33nthX3PNNWZm9sc/lkrZ0wWsSFASnzt3rpklXSMWLFgQNmvVDx8+POw+ffqYWalfzMyuuuqqsE844YSwv/zlL4ddy7WT6+INN9wQ9o9+9KOw/fr369cv2pjn1PO2r/wbfj/lvYhrw2mnnRZ2JTLotCR+73vjjTeijS4YZL/99gt7//33N7PaZGko3tOgEEIIIYRY7dFDrBBCCCGEKBwt4k5ASYPyxccff2xmyS13bzMzu/POO8OmTFGUaGrKKZSoKdswCtglw3JlGC87S3cCRk5++umnYbNoRB6lco4Vd0NhdCQjrF977bWweY7bbLNNg99auHBh2PPnzw/7pz/9adiTJ082s2QhiTwmsc6SqNJKI5qVxgeTkufxvMrFJUPOLWY3+cEPfhA23UmOOeYYM0tm/mAEc//+/cPefvvtw15vvfXMLF99t/baa4edVoyB8vnYsWPDZjYPd2naYYcdoo1rVF6irTnuuW5S5mYCdo805zrH9Y9rAu8pfg+iSxYzvHCtyTs8Lz8fL35ilsxiwqwbHFc+v9iWVgSk1tCFgFlFJkyYEDbdEr1s6vHHHx9tHB/PPPNM2O6KYVZyOfjNb34TbQ8//HDYLAjAKP+89NPK8D7pY/u8886Ltt/97ndhM/sAXS98baxFtg7txAohhBBCiMKhh1ghhBBCCFE4WrzYASUJ3/6nTMTtfrazSEKREkw77INKyJHsG49G5rY/o20pt+YRyhmMCPaI8unTp6d+NkvScmmYkikTcjOa9oILLgj7kUceMbNSMY3Wgks9lM/zKm01RlpmEsrJl156aer3vve974V97LHHNvg75xNdC7JcNPJCY0UJeMxt27YN+/zzzw/b1w1mLHCXHDOzdu3apf5eLaFMfvPNN4f91a9+Nex9993XzJLrABPbjxs3LmxG2/t6wwT21az9Xmm43lMG92j6nXfeOdqOOOKIsD2LiVnSheTxxx83M7Nrr7022urr68PmfKklvDf89re/DZuuBZTJR48ebWbJwg60OQc4VjbddFMzS2Y0ueOOO5p17LWEa58X+GDmH9436KK1++67h11LlyPtxAohhBBCiMLRIlt03C1g7k53es7KSUjHe+Zu9EAVPv0XdWepHLgLRYfxGTNmmJnZ+PHjo41lNLMc8msJz4Vvv08++WTYXuJun332ibazzjorbDrWM8irb9++Zmb29ttvR1vnzp3D5q4sfyMvfVMO3BnjufDteuDAgWZWXDUjK2/yjTfeaGZmF198cbRxx8zXCTOzJ554ImyfGwx64rUvSuDoyjSWk5LrJctonnvuuWZWKh1plixhzYCfrPysLQHXjCVLloTNOcC14rjjjjOz5Hnz+Llzx4Ae37FmUF9edqCbAudAhw4dwvbzmTVrVrSdcsopYVOhYP+6isE1g+oHd+pq2U9Zii93ppkb+K9//auZZZcf/v3vfx/2z3/+87B33HHHBm28v6yxxhqpx5Qn+PxApdPz6LIfmDOYOXV5rX39zFqr2Q+V7hPtxAohhBBCiMKhh1ghhBBCCFE4chHxQ/mDW9TMe9qxY8ewR40aZWbJfJ5FKhXaGFllND3voVky5+OkSZPMLJnvjjncqrmVv6owGIAuBJSGXfJkMAbzujKXJcvHupxDSYnlKOmEz99wKTLvQRwc6y+99FLYlIDZv9tuu62Z5efalwvP94UXXgjbA5FYhpWBegxuZPlVl1O9VKJZMV1JzJJ947I5x29WnkpK7L169TKzZBlJ5ug+6qijwq5lEA8lzjlz5oTN8qC8jm7zXCkdU1qm65qvuXQxKNL44HX2oE6zUlAO5wjXDK7DLrWblVwSWOLYx4xZftZLHgeDjpj/+K677grbrynHt5cqNjO78MILw+Za4uvH1772tWhj2VmOsbz0jVlyrWBZWQat+X2SrjRf//rXU3+Pc8LPmXP0k08+CZvrBj9TiXmlnVghhBBCCFE49BArhBBCCCEKR4u4E9BFgFv7XvKOUfWvvvpq2MwZS+nHSwt7j7i1AAALQUlEQVQympISCWXkPG3nN0ZaGU3mu6MkyuhRl1UHDBgQbWmRg7WGMsLy5cvDZs5KtlMmdFgKkPIX5Q/PmztmzJhoY8S5lx01S44VJ69jxvuPZS/pGkG3C8p9e+65p5nlZxxk0Vh0/cp41gXm/e3WrVvYzDk8ceLEsKdNm2ZmZn369En933l3u6Bc+dZbb4XteZV53nSz4frA8pHufsPMMYxYfv3118Pm+l3LeUI3K48WNyvl8MyCaxBLnL///vthb7TRRmaW//zaTYFz3iX2b37zm9H27LPPhs0+oPz7ne98x8ySkenMKMT/Ue4criSctyxTz/uAR9+bmd17771mlsz3SniOnunCzOy0004zs2TeZf7vPN0/sq7Hz372s7A9C5BZKaPLmWeeGW1bbbVV2MxQ4fdZs1KGoSzXwEGDBoXNjBh+fM1Zc7UTK4QQQgghCoceYoUQQgghROGoadlZjwqkFOyl8czM2rdvH/bixYvD9qhBRhpSUmKkYN6hNOjRfLfeemu0MaEyz+vAAw8M2yW0vBZ/cMkgLVG9WTIyuEuXLmF7dPCLL74YbYyanT9/ftj8jEvHlEcpg+RV+mkMl/gee+yxaKM7AZP7U2J3eZR9lyfSJKWs67XLLruE7dJgVmlYfo/zzP9fXmTQcqGUPnny5LC9PCizlHB83H///WEzIpl96mTNkVr2E9c3dyUxS5aHpYzcWNEKngvdDDybB4th1LKsZnOgW8C8efPMzOz73/9+tPEe6+dtZvbwww+H7S5thx56aLRxfORx7nBu07WqU6dOYf/qV78ys1KxD7PkudCdhGPJx0VaZpA8w2OkixDPuX///maWLBqSloXALFkMwsfUU089FW3MCHTLLbeEzaxS/n+aU2BGO7FCCCGEEKJw6CFWCCGEEEIUjhYPv0yLkKaEvNtuu4XNreuZM2eG7dG0TEB81VVXhc0kxHmsY8zte/bHhAkTzCwpr99+++1hb7nllmFTNk2TMvIYbU2JmIUbWLPdIz8Jo60feeSRsOlqwShtdyfwqHwzs3bt2oWdl/5oCpwD3meejcIsGVF85JFHhk25lVG2ecRlORZuuPvuu8M+77zzwk7LJpHlRvPggw+G/Yc//CFsT9rO6NoiyIFpcB1wSZzjYPDgwWGz/ayzzgrbo7fpykV3pW222SbsvLjf8DiYkYDtafOcbgNMbM/MHnTLKSI8x9deey3sYcOGmVlSuv3hD38YNjMVPPDAA2F7PxVp3SQ8X3etMks+dzjrrrtu2CwUwuIfLqNfeeWV0UY3hbzMkZXhWrFgwYKw+azgrkXrr79+tHnmATOz2267Leybb745bC+ewDWV/48uUHT5qcSY0k6sEEIIIYQoHLlIhMddED69802IjsgeoELHau7sZQUi5OVNkm8l99xzT9j+tsddKOZo43ml5TBk3/GNiLu9eXlLZJAAd0zTds6507LvvvuGTefzo48+OmzfueVOPd/A854vlXAn1nPkPvfcc9HGN+aDDz44bAZ0NMdpviXwsfryyy9HG4M2DzrooLA32GCDsD1f9Ny5c6ONuYWnTp0aNhUeD2Yp0jggXMfYH74G/uIXv4g27mIzH+all14a9hFHHGFmyZ1Jz+Ftlgxw4hqTF8o5pqydWCo5aTt0eYfnxZ0z7rj7DhiDARkQe91114VN5Sqr7GhR4DMA738ehESlygObzJL5TDkfXAE855xzoo2BS+y7PM0XjpG6urrUz7jKt2jRomijSsGAv7Ry9ln/g8pOfX192JXoH+3ECiGEEEKIwqGHWCGEEEIIUThq6k7gW9Dczud2NKV2lotzeZRy4AEHHBA23RDy4kKQFczluerMSoFbzHlLyYuffeGFF8J2OZUyEt0QLrroorApdbSUa4HLxZ6n0CyZp5L5byldellIugVQ5mCJYrqkeF5AOtvnSdZpDM4BBm5dffXVZpacL8wJShcNBtEVBR4zcwyOGDEi9fN+/TnH6UbBfIRjx44N22XVoroT0D2ELiQeyMYczOuss07YDHhl3/g6Sxmdv0vysp6uKlwnGEjIddHXziKdK9cMSr4M7PLAYQYpMSCa5axZCrxHjx5mlh9XtObAa+rPDF5+1szsww8/DJtzh0Fcfl9isDlzu48ePbpyB1xB6MbI0sN0x1q2bJmZlYJfzZLPLnRf4v3Vy32z7PcWW2wRNnMQ8x5fiTGlnVghhBBCCFE49BArhBBCCCEKR4u7E1D28K175gadPXt22JQUvSSrWUkS2mGHHaKNW/iUFPOS/5HZBJhpwSOszUryhZfVNUvm7ps+fXrYLKnque24Nc/fXbJkSdiMXE4r91kN/Bow3yQjzhkVS/nc3RDatm0bbYzG79q1a9hDhgwJmxkMiggzS8yaNStsjyRmmdDhw4eHzblVJOnPxwev59577x02JVHKWYcffriZJTMP7LrrrmHvvPPOYdPFyF1LiiQXE7pBsD9cAjz99NOj7cwzzwybEdZ0SXDXAmYyoDtSkVxx0qAcSlccZq9gflCurXmG50VXMkrBbPe1gi5Zffv2DdvLwK/c7vOkqPOFcF30Mc57xxlnnBE2ZXZfa8xKMjrdCSZNmhT2yJEjw661a2NW+Wi6CzEvsrtFZD03HXbYYWEzk4NnFeJzDscnf6/S9ybtxAohhBBCiMKhh1ghhBBCCFE4WtydgNvbLp8zUf0777wT9ttvvx02o948We5+++0XbUWKROd2OiOyPeMApb4+ffqEzaTTlF47dOhgZkmZkWUD0wpFmJVkhGrLHP77dPOg5MLryKTjLsVQMmXpXcrnPHe//kWNPqckw2TkLg1S9uO4L2JGArOS1LT11ltHG11MmKGDhS88mTYLQnBu0c6LW1Gl4XltsskmZmZ2zTXXRNujjz4aNiOvGY3fu3dvMzNbb731Un+3NcExwbWGa2BR1g0eM12Qdtppp7CZEcbPi653o0aNCpuuWrwHeZ9RHm4N+L2Q9x/aU6ZMCfuyyy4Lm+uNw+xIeSx1b5Y9xvmM0a9fv//5G1nl7v23s0qAVxPtxAohhBBCiMKhh1ghhBBCCFE4aupO4PIEIyG7d+8eNpPce4Jys5IMTnk6rY5vnuA2PKNfp02b1uAzlPVoM1kxpWOXeyhzDBo0KOys/mhp2YzHweOniwAlZf88j7MWckVLw77Za6+9wvZoUK91b5YcV0XvD0q97iJjlkyaneYukHf3oZbC+4GuAkOHDg07q+CKS8et1YWA5825xeT+zIZRxGIYXPsvv/zysE899dSw3eXA3U5W/h5dzdhnrc2NwPH1g0UNxo8fHzbnztNPPx22Z/vZfvvto43ZdrLc3PIE7xWc90VcA7QTK4QQQgghCkcuys5yd4X5+jxwwyz5RpOWty7vu1A8PgbucJfJ4bmyb5grtzGy3p7z2E/cSdOuWvJtmDtEPXv2NLPs4KXWhMbBqrOqa8bqAAOWhg0bFjZ30lzpK+oYZN7Pjh07Nvg7xwfvNa11xzULP1/2B3OSe7ndle002I953X1trWgnVgghhBBCFA49xAohhBBCiMJRU3eCNFYHqTTLqbpa/0MUl9VhPghRTSjvMujtggsuCJsBX0V1I3Akba866rvioZ1YIYQQQghROPQQK4QQQgghCkebcmTnNm3aLDOzP1bvcGpKhxUrVmzQ+MdKqD+SqD+SqD+SqD+SqD+StPL+MCuzT9QfSdQfDWnlfdKk/ijrIVYIIYQQQog8IHcCIYQQQghROPQQK4QQQgghCoceYoUQQgghROHQQ6wQQgghhCgceogVQgghhBCFQw+xQgghhBCicOghVgghhBBCFA49xAohhBBCiMKhh1ghhBBCCFE4/h+n3aiIPfVKCgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x864 with 100 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 3.28 s\n"
     ]
    }
   ],
   "source": [
    "sample_idx = np.random.choice(np.arange(X.shape[0]),100)\n",
    "sample_images = data['X'][sample_idx, :]\n",
    "fig, ax_array = plt.subplots(nrows=10, ncols=10, sharey=True, sharex=True, figsize=(12, 12))\n",
    "for r in range(10):\n",
    "    for c in range(10):\n",
    "        ax_array[r, c].matshow(np.array(sample_images[10 * r + c].reshape((20, 20))).T,cmap='gray_r')\n",
    "        plt.xticks(np.array([]))\n",
    "        plt.yticks(np.array([])) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 421 µs\n"
     ]
    }
   ],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 2.24 ms\n"
     ]
    }
   ],
   "source": [
    "def deserialize(seq):\n",
    "    '''提取参数'''\n",
    "    return seq[:25*401].reshape(25, 401), seq[25*401:].reshape(10, 26)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 2.09 ms\n"
     ]
    }
   ],
   "source": [
    "def serialize(a, b):\n",
    "    '''展开参数'''\n",
    "    return np.r_[a.flatten(),b.flatten()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 1.69 ms\n"
     ]
    }
   ],
   "source": [
    "theta = serialize(theta1,theta2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((5000, 401), (5000,))"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 14 ms\n"
     ]
    }
   ],
   "source": [
    "X = np.insert(X,0,1,axis=1)\n",
    "X.shape,y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5000, 10)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 149 ms\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder\n",
    "encoder = OneHotEncoder(sparse= False)\n",
    "y_onehot = encoder.fit_transform(y.reshape(-1,1))\n",
    "y_onehot.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10, array([0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]))"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 1.89 ms\n"
     ]
    }
   ],
   "source": [
    "y[0], y_onehot[0,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 1.11 ms\n"
     ]
    }
   ],
   "source": [
    "y = y_onehot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 690 µs\n"
     ]
    }
   ],
   "source": [
    "# 前向传播函数\n",
    "def forward_propagate(theta, X):\n",
    "    theta1,theta2 = deserialize(theta)\n",
    "    a1 = X\n",
    "    z2 = a1 @ theta1.T\n",
    "    a2 = np.insert(sigmoid(z2),0,values=1,axis=1)\n",
    "    z3 = a2 @ theta2.T\n",
    "    h = sigmoid(z3)\n",
    "    return a1,z2,a2,z3,h"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 723 µs\n"
     ]
    }
   ],
   "source": [
    "def cost(theta,X,y):\n",
    "    a1, z2, a2, z3, h = forward_propagate(theta, X)\n",
    "    J = 0\n",
    "    for i in range(len(X)):\n",
    "        first = - y[i] * np.log(h[i])\n",
    "        second = (1 - y[i]) * np.log(1 - h[i])\n",
    "        J = J + np.sum(first - second)\n",
    "    J = J / len(X)\n",
    "    return J"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2876291651613188"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 100 ms\n"
     ]
    }
   ],
   "source": [
    "cost(theta, X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 613 µs\n"
     ]
    }
   ],
   "source": [
    "def costReg(theta,X,y,learning_rate=1):\n",
    "    theta1,theta2 = deserialize(theta)\n",
    "    a1,z2,a2,z3,h = forward_propagate(theta, X)\n",
    "    J = 0\n",
    "    reg = np.sum(theta1[:,1:] ** 2) + np.sum(theta2[:,1:] ** 2)\n",
    "    J = (learning_rate / (2 * len(X))) * reg + cost(theta,X,y)\n",
    "    return J"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.38376985909092354"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 103 ms\n"
     ]
    }
   ],
   "source": [
    "costReg(theta,X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 387 µs\n"
     ]
    }
   ],
   "source": [
    "def sigmoid_gradient(z):\n",
    "    return sigmoid(z) * (1 - sigmoid(z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.25"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 4.54 ms\n"
     ]
    }
   ],
   "source": [
    "sigmoid_gradient(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f91e4df6850>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 159 ms\n"
     ]
    }
   ],
   "source": [
    "n = np.linspace(-10,10,100)\n",
    "plt.plot(n,sigmoid_gradient(n))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 427 µs\n"
     ]
    }
   ],
   "source": [
    "def random_init(size):\n",
    "    '''从服从的均匀分布的范围中随机返回size大小的值'''\n",
    "    return np.random.uniform(-0.12, 0.12, size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 16.5 ms\n"
     ]
    }
   ],
   "source": [
    "a1, z2, a2, z3, h = forward_propagate(theta, X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a1 (5000, 401) theta1 (25, 401)\n",
      "z2 (5000, 25)\n",
      "a2 (5000, 26) theta2 (10, 26)\n",
      "z3 (5000, 10)\n",
      "a3 (5000, 10)\n",
      "time: 950 µs\n"
     ]
    }
   ],
   "source": [
    "print('a1', a1.shape,'theta1', theta1.shape)\n",
    "print('z2', z2.shape)\n",
    "print('a2', a2.shape, 'theta2', theta2.shape)\n",
    "print('z3', z3.shape)\n",
    "print('a3', h.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 739 µs\n"
     ]
    }
   ],
   "source": [
    "def backpropagation(theta,X,y):\n",
    "    a1,z2,a2,z3,h = forward_propagate(theta, X)\n",
    "    t1,t2 = deserialize(theta) \n",
    "    d3 = h - y # (5000, 10)\n",
    "    d2 = d3 @ t2[:,1:] * sigmoid_gradient(z2)  # (5000, 25)\n",
    "    D2 = d3.T @ a2  # (10, 26)\n",
    "    D1 = d2.T @ a1 # (25, 401)\n",
    "    D = (1 / len(X)) * serialize(D1, D2)  # (10285,)\n",
    "    return D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 774 µs\n"
     ]
    }
   ],
   "source": [
    "def regularized_gradient(theta,X,y,learning_rate=1):\n",
    "    a1,z2,a2,z3,h = forward_propagate(theta, X)\n",
    "    D = backpropagation(theta, X, y)\n",
    "    theta1,theta2 = deserialize(theta)\n",
    "    D1, D2 = deserialize(backpropagation(theta, X, y))\n",
    "    theta1[:0] = 0 \n",
    "    theta2[:0] = 0\n",
    "    reg_D1 = D1 + (learning_rate / len(X)) * theta1\n",
    "    reg_D2 = D2 + (learning_rate / len(X)) * theta2\n",
    "    return serialize(reg_D1,reg_D2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 7.11 ms\n"
     ]
    }
   ],
   "source": [
    "import scipy.optimize as opt\n",
    "from sklearn.metrics import classification_report  # 这个包是评价报告"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 448 µs\n"
     ]
    }
   ],
   "source": [
    "def nn_training(X, y):\n",
    "    init_theta = random_init(10285)  # 25*401 + 10*26\n",
    "\n",
    "    res = opt.minimize(fun=costReg,\n",
    "                       x0=init_theta,\n",
    "                       args=(X, y, 1),\n",
    "                       method='TNC',\n",
    "                       jac=regularized_gradient,\n",
    "                       options={'maxiter': 400})\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     fun: 0.3159732265329833\n",
       "     jac: array([ 3.96126561e-05, -1.45542437e-07, -4.44482354e-07, ...,\n",
       "        1.42838311e-05,  1.31603337e-05,  1.27186966e-05])\n",
       " message: 'Max. number of function evaluations reached'\n",
       "    nfev: 400\n",
       "     nit: 30\n",
       "  status: 3\n",
       " success: False\n",
       "       x: array([-7.22619457e-01, -7.27712185e-04, -2.22241177e-03, ...,\n",
       "       -6.75894149e-01, -2.46241596e+00, -1.10389364e+00])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 1min 8s\n"
     ]
    }
   ],
   "source": [
    "res = nn_training(X, y)\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 559 µs\n"
     ]
    }
   ],
   "source": [
    "def accuracy(theta, X, y):\n",
    "    _, _, _, _, h = forward_propagate(res.x, X)\n",
    "    y_pred = np.argmax(h, axis=1) + 1\n",
    "    print(classification_report(y, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([10, 10, 10, ...,  9,  9,  9], dtype=uint8)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 2.14 ms\n"
     ]
    }
   ],
   "source": [
    "raw_y = data['y'].flatten()\n",
    "raw_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           1       0.99      1.00      0.99       500\n",
      "           2       0.99      0.99      0.99       500\n",
      "           3       0.99      0.99      0.99       500\n",
      "           4       1.00      1.00      1.00       500\n",
      "           5       1.00      1.00      1.00       500\n",
      "           6       1.00      1.00      1.00       500\n",
      "           7       0.99      0.99      0.99       500\n",
      "           8       1.00      1.00      1.00       500\n",
      "           9       0.99      0.99      0.99       500\n",
      "          10       0.99      1.00      1.00       500\n",
      "\n",
      "    accuracy                           0.99      5000\n",
      "   macro avg       0.99      0.99      0.99      5000\n",
      "weighted avg       0.99      0.99      0.99      5000\n",
      "\n",
      "time: 22.8 ms\n"
     ]
    }
   ],
   "source": [
    "accuracy(res.x, X, raw_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 681 µs\n"
     ]
    }
   ],
   "source": [
    "def plot_hidden(theta):\n",
    "    t1, _ = deserialize(theta)\n",
    "    t1 = t1[:, 1:]\n",
    "    fig,ax_array = plt.subplots(5, 5, sharex=True, sharey=True, figsize=(6,6))\n",
    "    for r in range(5):\n",
    "        for c in range(5):\n",
    "            ax_array[r, c].matshow(t1[r * 5 + c].reshape(20, 20), cmap='gray_r')\n",
    "            plt.xticks([])\n",
    "            plt.yticks([])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6JVfxFi/4MqN77PkMFrUFkNgu91xxx1psy0+/elPp73ZZpulvc4666StfrbyymOHEZditCeKMWjckNFxN2tdXPi6666bttqVLHPLLbdMm3XnKvfss88eV46IMacf38cw84dXxIZhGB3DE7FhGEbHGFiaIA2hU0BOINLtW265JW06GLbddtu0X3vttbQ/9alPRURVrrj88svTptRBZ923v/3ttJ9++um099prr4ioOnVYfskldVuDe0GUhHJDKb6ZCZPqKCYpIZ1XL7/8ckRUJRXGRJJa0Yn33e9+N+2f/OQnactJw3cz0dSbMomcapRUKDnRoUa5gU7gO++8MyIi/vzP/zyvnXzyyWl/4QtfSPvcc89NmxSXz1H8+uabb57X6Kxhn54oSIJiPelQI20mPWe/mD17dkRE/OIXv8hrG2+8cdqMI77kkkvSpoOU40rtVecInWio79dtN2a/2nrrrYt2adv3Pffckzblmj322CPtE044Ie3bbrst7XvvvTciqtIVpZCmMfleERuGYXQMT8SGYRgdY2B+UbcNkPRcqMtNSy8+vbfy3l933XV5jV5aRlBQbth1113TLtE5ygGkFKrLsCkoSRtJlxTnSGmCNFdRHRFVqs46ix6yjKzvoYceWnw2qfVFF12UtuSQj370o3mNcZBtecDr2pRyjMDogF/+8pdps/+wzyie/Morr8xrH//4x9M+/vjj077rrrvSpueckRqKS+Z2YNLhiZIm+LwnnngiIqoyDSU8vs9nn302bdJmtYtkjogxeS4i4vzzz0/7iiuuSJtSB+uqaCNG1UzE1m/2CfY/yS6USyhP8rMsF+WBG2+8MSKqdZQUFVGNuGI/3HfffdNmP9Q7Yzl6zYMfBK+IDcMwOoYnYsMwjI4xsDTBpTelAoGebm6kINXjdl3SdlExRg3wedyuycB3biHee++9077qqqsiorrJg9EJ8lA3pROLgt+n9KG6lSI1IqryCqkn6/PII49ERNXjTQlClDaiGnhPGs7y6f3ssMMOee3WW29NW9EEw0oU/H4pkoR0l1SS9WQdtNknYmwjB/sa5ZeddtopbcpGvAefKWmGETf0hCuqpM3MfRFVj702YfAdXnrppWnzfTE65sILL0z7qKOOioiq3EfpglEjjDihnMd3pc0gjCri+GkL7CuM4NG7o2RAm/XZcccd02b7aIwfeOCB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rxdddFHad955Z9o77bRT2mussUZERKy++up5je3Qzwm3bYDUf9VVV01bfSAiYq211kqbVFHvmCf38h1TYuBJv4899ljam222WdqipOwbG264Ydrsa22iFK1A2sx+QymF74j9RuVkn+D37r777rTXXHPNtDl+2Aa6N/usxnnExMs36vuUIyglsE/URZXoHpx/nnjiibSnTJnygc+OqNZT9ee1YSQar4gNwzA6RuOf+FJgdMnhwV9o/rpTQKcz5fbbb0/7mWeeiYiIfffdN689++zY+YIPPvhg2lwV7rnnnmlz1aNVDcvB1Y1WDm057Ra9l1YScrhFVNvsd7/7Xdp0RpViOblC40rwvvvuS3vGjBlps63oENXKmqyDq8kXX3xx3LOHRcmxwRUFnU+vvPJK2nRalhwpZFbz589P+8gjj0yb/e6ll15Km+2tHZJc+S1uaGXGd8u+z1UhV6Wsx8svvxwR1f6zwQYbpM17ixlFVFkk21F9hKtkMhayqkHQa7OF6sG6c8xwNcs6k0mob82ZMyevrbfeemmTGbCeZBWrrLLKuOew/7KP0e4HXhEbhmF0DE/EhmEYHaOVLc6k2XLMkUJfe+21aVOOuP/++9N+7rnnxt1j2223zWuUFV599dW011lnnbRJ/ekA23jjjSOiSsNvvvnmtOX0qNsaPAgo3MtRVOfgpAOObakcFhFjTjfuXae8QofWFVdckfaWW26ZNim3pCPSSlK/iZAmGOctiYFUkjapL98lnWtXX311RFSp6UYbbZT22muvnTYdW6SslD223nrriIh46KGH8hrfk9q77a3grLfeAaktJaNHH300bX6GbbvHHntERMRxxx2X15588sm06azjPZ5++um0Sdsle1DmolNM8cptpDoQSPn1vijF6F0tWi7KW5wP1G5893ROsu6cU5jQi9/VXEEJls9Tf+u3r3hFbBiG0TE8ERuGYXSMgQMjSelIaSUr0DNNSkH6Qg84aYJo0XbbbZfXSFXpIWYM4aabbpo2qbqkEXpASVsnIqtSSXqg55qyAqknvdWUByRviHZGVOUctislH0ZQ7LbbbmmrDel9noh4UMo9fJZsyjKk6AceeGDajAHmPRQFwvhjer9L2+YjqnHt7JvyqFMKKUUEtQH2uVI0D69RVuF7pkzDckpaOeuss/LaaaedljbbmdFFjCjg+FYUE2l/KZZ/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\n",
      "text/plain": [
       "<Figure size 432x432 with 25 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 781 ms\n"
     ]
    }
   ],
   "source": [
    "plot_hidden(res.x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
